]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
lint: Import eslint rules from gjs
authorFlorian Müllner <fmuellner@gnome.org>
Sat, 26 Jan 2019 23:15:39 +0000 (00:15 +0100)
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Fri, 12 Jul 2019 16:01:07 +0000 (16:01 +0000)
gjs started to run eslint during its CI a while ago, so there is an
existing rules set we can use as a starting point for our own setup.

As we will adapt those rules to our code base, we don't want those
changes to make it harder to synchronize the copy with future gjs
changes, so include the rules from a separate file rather than using
the configuration directly.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/609

.eslintrc.json [new file with mode: 0644]
lint/eslintrc-gjs.json [new file with mode: 0644]

diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644 (file)
index 0000000..255b0f2
--- /dev/null
@@ -0,0 +1,5 @@
+{
+    "extends": [
+        "./lint/eslintrc-gjs.json"
+    ]
+}
diff --git a/lint/eslintrc-gjs.json b/lint/eslintrc-gjs.json
new file mode 100644 (file)
index 0000000..74cadf2
--- /dev/null
@@ -0,0 +1,130 @@
+{
+    "env": {
+        "es6": true
+    },
+    "extends": "eslint:recommended",
+    "rules": {
+        "array-bracket-newline": [
+            "error",
+            "consistent"
+        ],
+        "array-bracket-spacing": [
+            "error",
+            "never"
+        ],
+        "arrow-spacing": "error",
+        "brace-style": "error",
+        "comma-spacing": [
+            "error",
+            {
+                "before": false,
+                "after": true
+            }
+        ],
+        "indent": [
+            "error",
+            4,
+            {
+                "ignoredNodes": [
+                    "CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child"
+                ],
+                "MemberExpression": "off"
+            }
+        ],
+        "key-spacing": [
+            "error",
+            {
+                "beforeColon": false,
+                "afterColon": true
+            }
+        ],
+        "keyword-spacing": [
+            "error",
+            {
+                "before": true,
+                "after": true
+            }
+        ],
+        "linebreak-style": [
+            "error",
+            "unix"
+        ],
+        "no-empty": [
+            "error",
+            {
+                "allowEmptyCatch": true
+            }
+        ],
+        "no-implicit-coercion": [
+            "error",
+            {
+                "allow": ["!!"]
+            }
+        ],
+        "no-restricted-properties": [
+            "error",
+            {
+                "object": "Lang",
+                "property": "bind",
+                "message": "Use arrow notation or Function.prototype.bind()"
+            },
+            {
+                "object": "Lang",
+                "property": "Class",
+                "message": "Use ES6 classes"
+            }
+        ],
+        "nonblock-statement-body-position": [
+            "error",
+            "below"
+        ],
+        "object-curly-newline": [
+            "error",
+            {
+                "consistent": true
+            }
+        ],
+        "object-curly-spacing": "error",
+        "prefer-template": "error",
+        "quotes": [
+            "error",
+            "single",
+            {
+                "avoidEscape": true
+            }
+        ],
+        "semi": [
+            "error",
+            "always"
+        ],
+        "semi-spacing": [
+            "error",
+            {
+                "before": false,
+                "after": true
+            }
+        ],
+        "space-before-blocks": "error",
+        "space-infix-ops": [
+            "error",
+            {
+                "int32Hint": false
+            }
+        ]
+    },
+    "globals": {
+        "ARGV": false,
+        "Debugger": false,
+        "GIRepositoryGType": false,
+        "imports": false,
+        "Intl": false,
+        "log": false,
+        "logError": false,
+        "print": false,
+        "printerr": false,
+        "window": false
+    },
+    "parserOptions": {
+        "ecmaVersion": 2017
+    }
+}